package com.orangelife.service.propFeeMeter;

import java.util.List;
import java.util.Map;

import com.orangelife.exception.AppBizException;
import com.orangelife.service.propFeeMeter.model.EditMeterDto;
import com.orangelife.service.propFeeMeter.model.PropFeeMeterDto;

/*****************************************************************
 * Copyright(C) ORANGELIFE Corporation 2015. All Rights Reserved.
 *****************************************************************/
/*
 * ============================================================== 功能名
 * PropFeeMeter类的 service层的增删改查
 * 
 * @author @author
 * 
 * @version 1.1.0
 * 
 * @date 2016-07-04 11:04:21
 * ==============================================================
 */
public interface IPropFeeMeterService {

	/**
	 * 用途 添加propFeeMeter（橙子生活）
	 * 
	 * @author
	 * @date创建时间 2016-07-04 11:04:21
	 * @param propFeeMeter
	 * @return
	 * @throws AppBizException
	 */
	public int addPropFeeMeter(PropFeeMeterDto propFeeMeter)
			throws AppBizException;

	/****
	 * 批量添加
	 * 
	 * @return
	 */
	public int bauthAddPropFeeMeter(PropFeeMeterDto propFeeMeter)
			throws AppBizException;

	/**
	 * 用途 修改propFeeMeter（橙子生活）
	 * 
	 * @author
	 * @date创建时间 2016-07-04 11:04:21
	 * @param propFeeMeter
	 * @return
	 * @throws AppBizException
	 */

	public int editPropFeeMeter(PropFeeMeterDto propFeeMeter)
			throws AppBizException;

	/**
	 * 用途 单个查询 （橙子生活）
	 * 
	 * @author
	 * @date创建时间 2016-07-04 11:04:21
	 * @param propFeeMeterID
	 * @return
	 * @throws AppBizException
	 */

	public PropFeeMeterDto findPropFeeMeterByID(String propFeeMeterID)
			throws AppBizException;

	/**
	 * 用途 逻辑删除（橙子生活）
	 * 
	 * @author
	 * @date创建时间 2016-07-04 11:04:21
	 * @param propFeeMeterID
	 * @return
	 * @throws AppBizException
	 */
	public int deletePropFeeMeterByLogic(String propFeeMeterID)
			throws AppBizException;

	/**
	 * 用途 查询列表 （橙子生活）
	 * 
	 * @author
	 * @date 创建时间 2016-07-04 11:04:21
	 * @param search
	 *            搜索内容
	 * @param tsCreate
	 *            创建时间
	 * @param pageNo
	 *            页码
	 * @param pageSize
	 *            页面大小
	 * @return
	 * @throws AppBizExceptionception
	 */
	public List<Map<String, Object>> findPropFeeMeterByPage(String commID,
			String tsCreate, String search, int pageNo, int pageSize)
			throws AppBizException;

	/**
	 * 用途 查询列表（返回对对象）（橙子生活）
	 * 
	 * @author
	 * @date 创建时间 2016-07-04 11:04:21
	 * @param servletRequest
	 * @param search
	 *            搜索内容
	 * @param tsCreate
	 *            创建时间
	 * @param pageNo
	 *            页码
	 * @param pageSize
	 *            页面大小
	 * @return
	 * @throws AppBizException
	 */
	public List<PropFeeMeterDto> getPropFeeMeterByPage(String tsCreate,
			String search, int pageNo, int pageSize) throws AppBizException;

	/**
	 * 用途 根据一张表内的所有ID查询propFeeMeter（橙子生活）(返回Map<String, Object>)
	 * 
	 * @author
	 * @date 创建时间 2016-07-04 11:04:21
	 * @param meterID
	 *            (非必填字段)
	 * 
	 * @param commID
	 *            (非必填字段)
	 * 
	 * @param meterTypeID
	 *            (非必填字段)
	 * 
	 * @param belongID
	 *            (非必填字段)
	 * 
	 * @param belongType
	 *            (非必填字段)
	 * 
	 * @param type
	 *            (非必填字段)
	 * 
	 * @param attrType
	 *            (非必填字段)
	 * @return
	 * @throws AppBizException
	 */

	public List<Map<String, Object>> selectPropFeeMeterByRelevantID(
			String meterID, String commID, String meterTypeID, String belongID,
			String belongType, String type, String attrType)
			throws AppBizException;

	/**
	 * 用途 根据一张表内的所有ID查询propFeeMeter（橙子生活）(返回对象)
	 * 
	 * @author
	 * @date 创建时间 2016-07-04 11:04:21
	 * @param meterID
	 *            (非必填字段)
	 * 
	 * @param commID
	 *            (非必填字段)
	 * 
	 * @param meterTypeID
	 *            (非必填字段)
	 * 
	 * @param belongID
	 *            (非必填字段)
	 * 
	 * @param belongType
	 *            (非必填字段)
	 * 
	 * @param type
	 *            (非必填字段)
	 * 
	 * @param attrType
	 *            (非必填字段)
	 * @return
	 * @throws AppBizException
	 */

	public List<PropFeeMeterDto> findPropFeeMeterByRelevantID(String meterID,
			String commID, String meterTypeID, String belongID,
			String belongType, String type, String attrType)
			throws AppBizException;

	/**
	 * 用途 批量查询propFeeMeter（橙子生活）(返回对象)
	 * 
	 * @author
	 * @date 创建时间 2016-07-04 11:04:21
	 * 
	 * @return
	 * @throws AppBizException
	 */

	public List<PropFeeMeterDto> bauthfindPropFeeMeter(
			List<String> propFeeMeterIDs) throws AppBizException;

	/**
	 * 用途 批量查询propFeeMeter（橙子生活）(返回Map)
	 * 
	 * @author
	 * @date 创建时间 2016-07-04 11:04:21
	 * 
	 * @return
	 * @throws AppBizException
	 */

	public List<Map<String, Object>> bauthfindPropFeeMeterByMap(
			Map<String, Object> propFeeMeter) throws AppBizException;

	public List<Map<String, Object>> bauthfindPropFeeMeterTreeByMap(
			Map<String, Object> propFeeMeter) throws AppBizException;

	/****
	 * 批量删除
	 * 
	 * @param propFeeMeterIDs
	 * @return
	 * @throws AppBizException
	 */
	public int bauthDeletPropFeeMeter(List<String> propFeeMeterIDs)
			throws AppBizException;

	/***
	 * 查询没有初始化的表
	 * 
	 * @param map
	 * @param tsCreate
	 * @param search
	 * @param pageNo
	 * @param pageSize
	 * @return
	 * @throws AppBizException
	 */
	public List<Map<String, Object>> getNoRecordPropFeeMeter(
			Map<String, Object> map, String tsCreate, String search,
			int pageNo, int pageSize) throws AppBizException;

	/***
	 * 查询初始化的表
	 * 
	 * @param map
	 * @param tsCreate
	 * @param search
	 * @param pageNo
	 * @param pageSize
	 * @return
	 * @throws AppBizException
	 */
	public List<Map<String, Object>> getInitRecordPropFeeMeter(
			Map<String, Object> map, String tsCreate, String search,
			int pageNo, int pageSize) throws AppBizException;

	/***
	 * 查询没有初始化的表
	 * 
	 * @param map
	 * @param tsCreate
	 * @param search
	 * @param pageNo
	 * @param pageSize
	 * @return
	 * @throws AppBizException
	 */
	public List<Map<String, Object>> getNoRecordPropFeeMeter(
			Map<String, Object> map, String tsCreate, String search)
			throws AppBizException;

	/***
	 * 查询房屋树形
	 * 
	 * @param commID
	 * @return
	 * @throws AppBizException
	 */
	public List<Map<String, Object>> findbuildUnitApartTree(String commID,
			String meterTypeID) throws AppBizException;

	/***
	 * 处理表读数，把期数往前移一期
	 * 
	 * @param commID
	 * @return
	 * @throws AppBizException
	 */

	public void dealMeterRecord(String commID,String date)
			throws AppBizException;

	/***
	 * 获取表读数
	 * 
	 * @param commID
	 * @return
	 * @throws AppBizException
	 */
	public List<Map<String, Object>>  selectCommMeterRecord(Map<String,Object> param)
			throws AppBizException;
	/***
	 * 获取表读数
	 * 
	 * @param commID
	 * @return
	 * @throws AppBizException
	 */
	public List<Map<String, Object>>  selectMeterRecord(Map<String,Object> param)
			throws AppBizException;
	
	public int editMeterRecords(EditMeterDto editMeterDto)throws AppBizException;
	
	public int editMeterRecordAndMoney(EditMeterDto editMeterDto)throws AppBizException;
	public int updateMerRecordStatus(String commID,String period,String bstatus,String astatus,String itemStat) 	throws AppBizException;
	


}
